package plugin

import (
	"gorm.io/gorm"
)

type MyCustomPlugin struct {
}

func NewMyCustomPlugin() gorm.Plugin {
	p := &MyCustomPlugin{}

	return p
}

func (t *MyCustomPlugin) Name() string {
	return "MyCustomPlugin"
}

func (t *MyCustomPlugin) Initialize(db *gorm.DB) error {
	// 1. 获取db的Callback对象
	cb := db.Callback()

	// 2. 将需要执行的操作以及对应的回调函数注册到Callback对象
	cb.Query().Before("gorm:query").Register("sqlparser:before:query", BeforeQuery)

	return nil
}

func BeforeQuery(db *gorm.DB) {
	// 如果 db.Error 为 nil，说明没有错误，可以继续执行
	if db.Error != nil || db.Statement.Schema == nil {
		return
	}

}
